/**
 * 提示工具类
 * 封装uni.showToast等提示方法
 */

/**
 * 显示提示
 * @param {string} title - 提示内容
 * @param {string} icon - 图标类型：success, error, loading, none
 * @param {number} duration - 显示时长
 * @param {boolean} mask - 是否显示透明蒙层
 */
export function showToast(title, icon = 'none', duration = 2000, mask = false) {
  // 检查是否在uni环境
  if (typeof uni !== 'undefined') {
    uni.showToast({
      title: title,
      icon: icon,
      duration: duration,
      mask: mask
    });
  } else {
    console.log(`[Toast] ${title}`);
  }
}

/**
 * 显示成功提示
 * @param {string} title - 提示内容
 * @param {number} duration - 显示时长
 * @param {boolean} mask - 是否显示透明蒙层
 */
export function showSuccessToast(title, duration = 2000, mask = false) {
  showToast(title, 'success', duration, mask);
}

/**
 * 显示错误提示
 * @param {string} title - 提示内容
 * @param {number} duration - 显示时长
 * @param {boolean} mask - 是否显示透明蒙层
 */
export function showErrorToast(title, duration = 2000, mask = false) {
  showToast(title, 'error', duration, mask);
}

/**
 * 显示加载提示
 * @param {string} title - 提示内容
 * @param {boolean} mask - 是否显示透明蒙层
 */
export function showLoadingToast(title = '加载中...', mask = true) {
  if (typeof uni !== 'undefined') {
    uni.showLoading({
      title: title,
      mask: mask
    });
  } else {
    console.log(`[Loading] ${title}`);
  }
}

/**
 * 隐藏加载提示
 */
export function hideLoadingToast() {
  if (typeof uni !== 'undefined') {
    uni.hideLoading();
  }
}

/**
 * 显示模态弹窗
 * @param {Object} options - 配置选项
 * @param {string} options.title - 标题
 * @param {string} options.content - 内容
 * @param {boolean} options.showCancel - 是否显示取消按钮
 * @param {string} options.cancelText - 取消按钮文字
 * @param {string} options.confirmText - 确认按钮文字
 * @param {function} options.success - 成功回调
 * @param {function} options.fail - 失败回调
 */
export function showModal(options) {
  if (typeof uni !== 'undefined') {
    uni.showModal({
      title: options.title || '',
      content: options.content || '',
      showCancel: options.showCancel !== undefined ? options.showCancel : true,
      cancelText: options.cancelText || '取消',
      confirmText: options.confirmText || '确定',
      success: options.success,
      fail: options.fail
    });
  } else {
    console.log(`[Modal] ${options.title}: ${options.content}`);
  }
}

/**
 * 显示操作菜单
 * @param {Object} options - 配置选项
 * @param {Array} options.itemList - 按钮文字数组
 * @param {function} options.success - 成功回调
 * @param {function} options.fail - 失败回调
 */
export function showActionSheet(options) {
  if (typeof uni !== 'undefined') {
    uni.showActionSheet({
      itemList: options.itemList || [],
      success: options.success,
      fail: options.fail
    });
  } else {
    console.log(`[ActionSheet] ${options.itemList.join(', ')}`);
  }
}
